// 渠道管理混入
// 为页面提供统一的渠道筛选功能

import channelManager from '@/utils/channelManager'

export default {
  data() {
    return {
      // 渠道选项列表
      channelOptions: []
    }
  },

  async created() {
    // 加载渠道选项
    await this.loadChannelOptions()
  },

  mounted() {
    // 在mounted时再次确保数据已加载
    if (this.channelOptions.length === 0) {
      this.loadChannelOptions()
    }
  },

  beforeDestroy() {
    // 取消监听
    if (this.channelUpdateCallback) {
      channelManager.unsubscribe(this.channelUpdateCallback)
    }
  },

  methods: {
    // 加载渠道选项
    async loadChannelOptions() {
      try {
        // 创建回调函数
        this.channelUpdateCallback = (channels) => {
          this.channelOptions = channelManager.getChannelOptions()
          console.log('渠道数据已更新:', this.channelOptions)
        }

        // 订阅渠道数据变化
        channelManager.subscribe(this.channelUpdateCallback)

        // 如果已有数据，直接使用
        const options = channelManager.getChannelOptions()
        if (options.length > 0) {
          this.channelOptions = options
          console.log('使用现有渠道数据:', this.channelOptions)
        } else {
          // 如果没有数据，使用默认选项
          this.setDefaultChannelOptions()
          console.log('使用默认渠道数据:', this.channelOptions)
        }
      } catch (error) {
        console.error('加载渠道选项失败:', error)
        // 提供默认选项
        this.setDefaultChannelOptions()
      }
    },

    // 设置默认渠道选项
    setDefaultChannelOptions() {
      this.channelOptions = [
        { label: '全部渠道', value: 0 },
        { label: '官方渠道', value: 1 },
        { label: '合作渠道A', value: 2 },
        { label: '合作渠道B', value: 3 },
        { label: '推广渠道', value: 4 },
        { label: '内测渠道', value: 5 },
        { label: '测试渠道', value: 6 }
      ]
    },

    // 根据渠道值获取渠道名称
    getChannelName(value) {
      return channelManager.getChannelName(value)
    },

    // 根据渠道名称获取渠道值
    getChannelValue(name) {
      return channelManager.getChannelValue(name)
    },

    // 格式化渠道参数（确保传递数字类型）
    formatChannelParam(channelValue) {
      if (channelValue === null || channelValue === undefined || channelValue === '') {
        return 0
      }
      return Number(channelValue) || 0
    },

    // 强制刷新渠道数据
    async refreshChannelOptions() {
      console.log('强制刷新渠道数据...')
      await this.loadChannelOptions()
    }
  }
} 